package com.zmn.plat.services.impl.plat.biztype;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.zmn.common.utils.collection.CollectionUtil;
import com.zmn.common.utils.string.StringUtil;
import com.zmn.plat.model.entity.plat.biztype.PlatBizType;
import com.zmn.plat.model.entity.plat.biztype.PlatBizTypeQuery;
import com.zmn.plat.persistence.interfaces.plat.biztype.PlatBizTypeDao;
import com.zmn.plat.services.interfaces.plat.biztype.PlatBizTypeService;

@Service
public class PlatBizTypeServiceImpl implements PlatBizTypeService {

    @Resource
    PlatBizTypeDao platBiztypeDao;

    @Override
    public PlatBizType findByKey(Integer id) {
        return platBiztypeDao.findByKey(id);
    }

    @Override
    public List<PlatBizType> listPageByQuery(PlatBizTypeQuery query) {
        int count = countByQuery(query);
        query.setTotalCount(count);
        return platBiztypeDao.listPageByQuery(query);
    }

    @Override
    public List<PlatBizType> listByQuery(PlatBizTypeQuery query) {
        return platBiztypeDao.listByQuery(query);
    }

    @Override
    public List<Integer> listBizTypeByPlat(Integer plat) {
        PlatBizTypeQuery platBizTypeQuery = new PlatBizTypeQuery();
        platBizTypeQuery.setPlat(plat);
        List<PlatBizType> platBizTypes = platBiztypeDao.listByQuery(platBizTypeQuery);
        if (CollectionUtil.isNotNullOrEmpty(platBizTypes)) {
            String bizTypeStr = platBizTypes.get(0).getBizTypeStr();
            if (StringUtil.isNotBlank(bizTypeStr)) {
                List<String> bizTypeStrList = StringUtil.splitStrs(bizTypeStr, ",");
                List<Integer> bizTypeList = new ArrayList<>();
                for (String innerStr : bizTypeStrList) {
                    bizTypeList.add(Integer.valueOf(innerStr));
                }

                return bizTypeList;
            }
        }

        return Collections.emptyList();
    }

    @Override
    public List<PlatBizType> listAll() {
        return platBiztypeDao.listAll();
    }

    @Override
    public Integer countByQuery(PlatBizTypeQuery query) {
        return platBiztypeDao.countByQuery(query);
    }

    @Override
    public Integer updateByKey(PlatBizType platBiztype) {
        return platBiztypeDao.updateByKey(platBiztype);
    }

    @Override
    public Integer insert(PlatBizType platBiztype) {
        return platBiztypeDao.insert(platBiztype);
    }

    @Override
    public Integer insertBatch(List<PlatBizType> platBizTypeList) {
        return platBiztypeDao.insertBatch(platBizTypeList);
    }

    @Override
    public Integer deleteByKey(Integer id) {
        return platBiztypeDao.deleteByKey(id);
    }

    @Override
    public Integer deleteAllData() {
        return platBiztypeDao.deleteAllData();
    }
}